month_start <- ym(params$month_start)
month_end <- ym(params$month_end)

# Calculate number of months
months_diff <- floor((month_start %--% month_end) / dmonths(1))

# Create vector with all the relevant months
month_list <- month_start + months(0:months_diff)

# Generate file names using months specified above
filename <- map(month_list, ~ sprintf("../quality_standard/download_analytics/HSC dashboard - Engagement and implementation_All webpages_ links and downloads_Table_%s.csv", as.character(.x) %>% str_remove("-01$")))
# Import data
data <- filename %>% 
    set_names() %>% 
    map_dfr(read_csv, col_types = "ccd", .id = "filename")

# Extract the date from the file name
data <- data %>% 
    mutate(year_month = str_extract(filename, "(?<=Table_)\\d{4}-\\d{2}(?=.csv)") %>% ym(.)) %>% 
    select(-filename)
# Filter for relevant file rows
selected <- data %>% 
    filter(str_detect(File, params$file_regex)) %>% 
    select(year_month, everything()) %>% 
    rename(page_path = 'Page path',
           file = File,
           downloads = Downloads)
# Save
write_csv(selected, sprintf('./output/%s_%s_to_%s.csv', params$file_regex, params$month_start, params$month_end))
# Present raw data
selected %>% 
    datatable(.,
          filter = "top",
          colnames = c("Month" = "year_month",
                       "Download page" = "page_path",
                       "File URL" = "file",
                       "Downloads" = "downloads"),
          rownames = FALSE,
          extensions = 'Buttons', 
          options = list(
              dom = 'Bfrtip',
              buttons = c('csv')
  ))

Monthly downloads of the Quality improvement resource

total_downloads <- selected %>% 
    group_by(year_month) %>% 
    summarise(downloads = sum(downloads))

total_downloads %>% 
    mutate(year_month = zoo::as.yearmon(year_month)) %>% 
    rename("Month" = year_month,
           "Downloads" = downloads) %>% 
    kbl() %>% 
    kable_styling(bootstrap_options = c("striped", "hover"))
Month Downloads
Jun 2019 131
Jul 2019 127
Aug 2019 90
Sep 2019 84
Oct 2019 118
Nov 2019 146
Dec 2019 76
Jan 2020 120
Feb 2020 122
Mar 2020 81
Apr 2020 61
May 2020 56
Jun 2020 64
Jul 2020 80
Aug 2020 79
Sep 2020 73
Oct 2020 55
Nov 2020 48
Dec 2020 68
Jan 2021 109
Feb 2021 124
Mar 2021 145
Apr 2021 132
May 2021 134
Jun 2021 119
Jul 2021 241
Aug 2021 85
Sep 2021 91
Oct 2021 99
Nov 2021 128
Dec 2021 90
Jan 2022 120
Feb 2022 127
Mar 2022 238
Apr 2022 88
May 2022 126
Jun 2022 100
fig <- total_downloads %>% 
    mutate(year_month = zoo::as.yearmon(year_month)) %>% 
    ggplot(aes(x = year_month, y = downloads)) +
    geom_line() +
    labs(x = "Month",
         y = "Downloads",
         title = paste0("Total monthly downloads of ", params$file_regex)) +
    scale_y_continuous(expand = c(0,0),
                       limits = c(0, NA))
    

fig %>% ggplotly()
LS0tDQp0aXRsZTogIkdvb2dsZSBhbmFseXRpY3MiDQphdXRob3I6ICJJbXBhY3QgdGVhbSINCmRhdGU6ICJgciBTeXMuRGF0ZSgpYCINCm91dHB1dDogDQogICAgaHRtbF9kb2N1bWVudDoNCiAgICAgICAgdG9jOiBUUlVFDQogICAgICAgIHRvY19mbG9hdDogVFJVRQ0KICAgICAgICBjb2RlX2Rvd25sb2FkOiBUUlVFDQogICAgICAgIGNvZGVfZm9sZGluZzogImhpZGUiDQpwYXJhbXM6DQogICAgbW9udGhfc3RhcnQ6IDIwMTktMDYNCiAgICBtb250aF9lbmQ6IDIwMjItMDYNCiAgICBwcm9kdWN0OiBRdWFsaXR5IGltcHJvdmVtZW50IHJlc291cmNlDQogICAgZmlsZV9yZWdleDogcXVhbGl0eS1pbXByb3ZlbWVudC1yZXNvdXJjZQ0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoRFQpDQpsaWJyYXJ5KGthYmxlRXh0cmEpDQpsaWJyYXJ5KHpvbykNCmxpYnJhcnkocGxvdGx5KQ0KIyBsaWJyYXJ5KHJlYWN0YWJsZSkNCg0KYGBgDQoNCmBgYHtyfQ0KbW9udGhfc3RhcnQgPC0geW0ocGFyYW1zJG1vbnRoX3N0YXJ0KQ0KbW9udGhfZW5kIDwtIHltKHBhcmFtcyRtb250aF9lbmQpDQoNCiMgQ2FsY3VsYXRlIG51bWJlciBvZiBtb250aHMNCm1vbnRoc19kaWZmIDwtIGZsb29yKChtb250aF9zdGFydCAlLS0lIG1vbnRoX2VuZCkgLyBkbW9udGhzKDEpKQ0KDQojIENyZWF0ZSB2ZWN0b3Igd2l0aCBhbGwgdGhlIHJlbGV2YW50IG1vbnRocw0KbW9udGhfbGlzdCA8LSBtb250aF9zdGFydCArIG1vbnRocygwOm1vbnRoc19kaWZmKQ0KDQojIEdlbmVyYXRlIGZpbGUgbmFtZXMgdXNpbmcgbW9udGhzIHNwZWNpZmllZCBhYm92ZQ0KZmlsZW5hbWUgPC0gbWFwKG1vbnRoX2xpc3QsIH4gc3ByaW50ZigiLi4vcXVhbGl0eV9zdGFuZGFyZC9kb3dubG9hZF9hbmFseXRpY3MvSFNDIGRhc2hib2FyZCAtIEVuZ2FnZW1lbnQgYW5kIGltcGxlbWVudGF0aW9uX0FsbCB3ZWJwYWdlc18gbGlua3MgYW5kIGRvd25sb2Fkc19UYWJsZV8lcy5jc3YiLCBhcy5jaGFyYWN0ZXIoLngpICU+JSBzdHJfcmVtb3ZlKCItMDEkIikpKQ0KYGBgDQoNCg0KYGBge3J9DQojIEltcG9ydCBkYXRhDQpkYXRhIDwtIGZpbGVuYW1lICU+JSANCiAgICBzZXRfbmFtZXMoKSAlPiUgDQogICAgbWFwX2RmcihyZWFkX2NzdiwgY29sX3R5cGVzID0gImNjZCIsIC5pZCA9ICJmaWxlbmFtZSIpDQoNCiMgRXh0cmFjdCB0aGUgZGF0ZSBmcm9tIHRoZSBmaWxlIG5hbWUNCmRhdGEgPC0gZGF0YSAlPiUgDQogICAgbXV0YXRlKHllYXJfbW9udGggPSBzdHJfZXh0cmFjdChmaWxlbmFtZSwgIig/PD1UYWJsZV8pXFxkezR9LVxcZHsyfSg/PS5jc3YpIikgJT4lIHltKC4pKSAlPiUgDQogICAgc2VsZWN0KC1maWxlbmFtZSkNCmBgYA0KDQoNCmBgYHtyfQ0KIyBGaWx0ZXIgZm9yIHJlbGV2YW50IGZpbGUgcm93cw0Kc2VsZWN0ZWQgPC0gZGF0YSAlPiUgDQogICAgZmlsdGVyKHN0cl9kZXRlY3QoRmlsZSwgcGFyYW1zJGZpbGVfcmVnZXgpKSAlPiUgDQogICAgc2VsZWN0KHllYXJfbW9udGgsIGV2ZXJ5dGhpbmcoKSkgJT4lIA0KICAgIHJlbmFtZShwYWdlX3BhdGggPSAnUGFnZSBwYXRoJywNCiAgICAgICAgICAgZmlsZSA9IEZpbGUsDQogICAgICAgICAgIGRvd25sb2FkcyA9IERvd25sb2FkcykNCmBgYA0KDQoNCmBgYHtyfQ0KIyBTYXZlDQp3cml0ZV9jc3Yoc2VsZWN0ZWQsIHNwcmludGYoJy4vb3V0cHV0LyVzXyVzX3RvXyVzLmNzdicsIHBhcmFtcyRmaWxlX3JlZ2V4LCBwYXJhbXMkbW9udGhfc3RhcnQsIHBhcmFtcyRtb250aF9lbmQpKQ0KDQpgYGANCg0KDQpgYGB7cn0NCiMgUHJlc2VudCByYXcgZGF0YQ0Kc2VsZWN0ZWQgJT4lIA0KICAgIGRhdGF0YWJsZSguLA0KICAgICAgICAgIGZpbHRlciA9ICJ0b3AiLA0KICAgICAgICAgIGNvbG5hbWVzID0gYygiTW9udGgiID0gInllYXJfbW9udGgiLA0KICAgICAgICAgICAgICAgICAgICAgICAiRG93bmxvYWQgcGFnZSIgPSAicGFnZV9wYXRoIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgVVJMIiA9ICJmaWxlIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIkRvd25sb2FkcyIgPSAiZG93bmxvYWRzIiksDQogICAgICAgICAgcm93bmFtZXMgPSBGQUxTRSwNCiAgICAgICAgICBleHRlbnNpb25zID0gJ0J1dHRvbnMnLCANCiAgICAgICAgICBvcHRpb25zID0gbGlzdCgNCiAgICAgICAgICAgICAgZG9tID0gJ0JmcnRpcCcsDQogICAgICAgICAgICAgIGJ1dHRvbnMgPSBjKCdjc3YnKQ0KICApKQ0KYGBgDQojIGByIHBhc3RlMCgiTW9udGhseSBkb3dubG9hZHMgb2YgdGhlICIsIHBhcmFtcyRwcm9kdWN0KWANCmBgYHtyfQ0KdG90YWxfZG93bmxvYWRzIDwtIHNlbGVjdGVkICU+JSANCiAgICBncm91cF9ieSh5ZWFyX21vbnRoKSAlPiUgDQogICAgc3VtbWFyaXNlKGRvd25sb2FkcyA9IHN1bShkb3dubG9hZHMpKQ0KDQp0b3RhbF9kb3dubG9hZHMgJT4lIA0KICAgIG11dGF0ZSh5ZWFyX21vbnRoID0gem9vOjphcy55ZWFybW9uKHllYXJfbW9udGgpKSAlPiUgDQogICAgcmVuYW1lKCJNb250aCIgPSB5ZWFyX21vbnRoLA0KICAgICAgICAgICAiRG93bmxvYWRzIiA9IGRvd25sb2FkcykgJT4lIA0KICAgIGtibCgpICU+JSANCiAgICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIpKQ0KYGBgDQoNCmBgYHtyfQ0KZmlnIDwtIHRvdGFsX2Rvd25sb2FkcyAlPiUgDQogICAgbXV0YXRlKHllYXJfbW9udGggPSB6b286OmFzLnllYXJtb24oeWVhcl9tb250aCkpICU+JSANCiAgICBnZ3Bsb3QoYWVzKHggPSB5ZWFyX21vbnRoLCB5ID0gZG93bmxvYWRzKSkgKw0KICAgIGdlb21fbGluZSgpICsNCiAgICBsYWJzKHggPSAiTW9udGgiLA0KICAgICAgICAgeSA9ICJEb3dubG9hZHMiLA0KICAgICAgICAgdGl0bGUgPSBwYXN0ZTAoIlRvdGFsIG1vbnRobHkgZG93bmxvYWRzIG9mICIsIHBhcmFtcyRmaWxlX3JlZ2V4KSkgKw0KICAgIHNjYWxlX3lfY29udGludW91cyhleHBhbmQgPSBjKDAsMCksDQogICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoMCwgTkEpKQ0KICAgIA0KDQpmaWcgJT4lIGdncGxvdGx5KCkNCmBgYA0KDQo=